gusucode.com > 支持向量机工具箱 - LIBSVM OSU_SVM LS_SVM源码程序 > 支持向量机工具箱 - LIBSVM OSU_SVM LS_SVM\Classification_LS_SVMlab.m
% 支持向量机用于多类模式分类 - 必须选择最优参数 gam,sig2 % 工具箱:LS_SVMlab % 使用平台:Matlab6.5 % 作者:陆振波,海军工程大学 % 欢迎同行来信交流与合作,更多文章与程序下载请访问我的个人主页 % 电子邮件:luzhenbo@sina.com % 个人主页:luzhenbo.88uu.com.cn clc clear close all %--------------------------------------------------- % 产生训练样本与测试样本,每一列为一个样本 n1 = [rand(3,5),rand(3,5)+1,rand(3,5)+2]; x1 = [1*ones(1,5),2*ones(1,5),3*ones(1,5)]; % 特别注意:这里的目标与神经网络不同 n2 = [rand(3,5),rand(3,5)+1,rand(3,5)+2]; x2 = [1*ones(1,5),2*ones(1,5),3*ones(1,5)]; % 特别注意:这里的目标与神经网络不同 xn_train = n1; % 训练样本 dn_train = x1; % 训练目标 xn_test = n2; % 测试样本 dn_test = x2; % 测试目标 %--------------------------------------------------- % 参数设置 X = xn_train'; Y = dn_train'; Xt = xn_test'; Yt = dn_test'; type = 'c'; kernel_type = 'RBF_kernel'; gam = 2; sig2 = 2; preprocess = 'preprocess'; codefct = 'code_MOC'; % 将“多类”转换成“两类”的编码方案 % 1. Minimum Output Coding (code_MOC) % 2. Error Correcting Output Code (code_ECOC) % 3. One versus All Coding (code_OneVsAll) % 4. One Versus One Coding (code_OneVsOne) %--------------------------------------------------- % 编码 [Yc,codebook,old_codebook] = code(Y,codefct) %--------------------------------------------------- % 交叉验证优化参数 %[gam,sig2] = tunelssvm({X,Yc,type,gam,sig2,kernel_type,preprocess}) %--------------------------------------------------- % 训练与测试 [alpha,b] = trainlssvm({X,Yc,type,gam,sig2,kernel_type,preprocess}); % 训练 Yd0 = simlssvm({X,Yc,type,gam,sig2,kernel_type,preprocess},{alpha,b},Xt); % 分类 %--------------------------------------------------- % 解码 Yd = code(Yd0,old_codebook,[],codebook); %--------------------------------------------------- % 结果统计 Result = ~abs(Yd-Yt) % 正确分类显示为1 Percent = sum(Result)/length(Result) % 正确分类率 %--------------------------------------------------- % 注意:以这两种写法等价 % -- 1 -- % [Yc,codebook,old_codebook] = code(Y, codefct) % [alpha, b] = trainlssvm({X,Yc,type,gam,sig2,kernel,preprocess}) % Yd0 = simlssvm({X,Yc,type,gam,sig2,kernel}, {alpha,b}, Xt) % Yd = code(Yd0,old_codebook,[],codebook) % -- 2 -- % model = initlssvm(X,Y,type,gam,sig2,kernel,preprocess) % model = changelssvm(model,'codetype',codefct) % model = trainlssvm(model) % Yd = simlssvm(model, Xt)